package com.sale.goods.service;

import com.sale.common.mybatis.core.page.PageQuery;
import com.sale.common.mybatis.core.page.TableDataInfo;
import com.sale.goods.domain.dto.GoodsClosingDocumentDto;
import com.sale.goods.domain.dto.GoodsCollectionDto;
import com.sale.goods.domain.dto.single.GoodsCollectionSingle;
import com.sale.goods.domain.vo.GoodsCollectionVo;

import java.util.Map;

/**
 * @Description 收款单
 * @Date 23-07-20
 * @Author hl
 **/
public interface IGoodsCollectionService {

    /**
     * 收款单
     *
     * @param goodSCollectionVo,pageQuery
     * @return 收款单集合
     */
    TableDataInfo<Map<String,String>> selectCollectionList(GoodsCollectionVo goodSCollectionVo, PageQuery pageQuery);

    /**
     * 新增收款单
     *
     * @param goodsCollectionVo
     * @return int
     */
    int insertCollection(GoodsCollectionVo goodsCollectionVo) throws Exception;

    /**
     * 查询单个收款单
     *
     * @param collectionId
     * @return int
     */
    GoodsCollectionSingle selectCollectionById(long collectionId);

    /**
     * 删除单个收款单
     *
     * @param collectionId
     * @return int
     */
    int deleteCollectionById(Long collectionId);

    /**
     * 修改收款单
     *
     * @param goodsCollectionVo
     * @return int
     */
    int updateCollectionEdit(GoodsCollectionVo goodsCollectionVo);

    /**
     * 提交审核
     *
     * @param collectionId
     * @return int
     */
    int submitReview(Long collectionId);

    /**
     * 撤销审核
     *
     * @param collectionId
     * @return int
     */
    int deleteReview(Long collectionId);

    /**
     * 审核单据
     *
     * @param goodsCollectionVo
     * @return int
     */
    int goodSExamineReview(GoodsCollectionVo goodsCollectionVo) throws Exception;


    /**
     * 测试
     *
     */
    TableDataInfo<Map<String, Object>> selectCes(GoodsCollectionVo goodSCollectionVo, PageQuery pageQuery);

    /**
     * 工作台接口(销售已收款金额)
     */
    String goodsReceived();

    /**
     * 工作台接口(客户欠款金额)
     */
    String goodsArrears();

    /**
     * 结账反结账（财务模块单据查询）
     */
    GoodsClosingDocumentDto closingCounterClosingDocument(String time);
}
